package com.cn.hotel.dao.Impl;

import com.cn.hotel.dao.IUserDao;
import com.cn.hotel.model.PageModel;
import com.cn.hotel.model.UserModel;
import com.cn.hotel.util.GetSqlSession;
import com.cn.hotel.util.JDBC;
import com.mysql.cj.protocol.Resultset;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserImpl implements IUserDao {
    /**
     * 页面注册信息输入，用户新增公用
     */
    @Override
    public int add(UserModel userModel) {
        /**
         * mapper映射，数据库配置jdbc.properties  所有执行操作都要调用GetSqlSession
         */
        int count = GetSqlSession.getSqlSession().insert("com.cn.hotel.dao.IUserDao.add", userModel);
        return count;
    }

    /**
     * 注册判断
     */
    @Override
    public UserModel findByUsername(String userName) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.hotel.dao.IUserDao.findByUsername", userName);
    }

    /**
     * 登录判断，
     */
    @Override
    public UserModel isHaveFindByUsernamePassword(UserModel userModel) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.hotel.dao.IUserDao.isHaveFindByUsernamePassword", userModel);
    }

    /**
     * 实现用户数据删除操作
     */
    @Override
    public int deleteById(Integer id) {
        return GetSqlSession.getSqlSession().delete("com.cn.hotel.dao.IUserDao.deleteById", id);
    }

    /**
     * 用户模糊查询操作
     *
     * @param userModel
     * @return
     */
    @Override
    public List<UserModel> findAll(UserModel userModel) {
        return GetSqlSession.getSqlSession().selectList("com.cn.hotel.dao.IUserDao.findAll", userModel);
    }


    /**
     * 用户编辑，点击后进行查询该id的数据，然后把数据返回到页面响应。
     * 查完id 需要将此id对应的所有的值返回给页面展示，所以返回值类型为userModel
     *
     * @return
     */
    @Override
    public UserModel findById(Integer id) {
        return GetSqlSession.getSqlSession().selectOne("com.cn.hotel.dao.IUserDao.findById", id);
    }

    /**
     * 用户编辑的sql语句编写
     *
     * @param userModel
     * @return
     */
    @Override
    public int edit(UserModel userModel) {
        return GetSqlSession.getSqlSession().update("com.cn.hotel.dao.IUserDao.edit", userModel);
    }

    /**
     * 获得数据库的总条数
     *
     * @param userModel
     * @return
     */
    @Override
    public int getCount(UserModel userModel) {
     return GetSqlSession.getSqlSession().selectOne("com.cn.hotel.dao.IUserDao.getCount",userModel);
    }


}
